home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / ideas / draw_logo_line.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  8KB  |  357 lines

  1. /*
  2.  * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <gl.h>
  18.  
  19. #include "objects.h"
  20.  
  21. float scp[14][3] = {
  22.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  23.     {0.500000, 0.866025, 0.000000},    {0.500000, 0.866025, 5.000000},
  24.     {-0.500000, 0.866025, 0.000000},    {-0.500000, 0.866025, 5.000000},
  25.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 5.000000},
  26.     {-0.500000, -0.866025, 0.000000},    {-0.500000, -0.866025, 5.000000},
  27.     {0.500000, -0.866025, 0.000000},    {0.500000, -0.866025, 5.000000},
  28.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  29. };
  30.  
  31. float dcp[14][3] = {
  32.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  33.     {0.500000, 0.866025, 0.000000},    {0.500000, 0.866025, 7.000000},
  34.     {-0.500000, 0.866025, 0.000000},    {-0.500000, 0.866025, 7.000000},
  35.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 7.000000},
  36.     {-0.500000, -0.866025, 0.000000},    {-0.500000, -0.866025, 7.000000},
  37.     {0.500000, -0.866025, 0.000000},    {0.500000, -0.866025, 7.000000},
  38.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  39. };
  40.  
  41. float ep[7][7][3] = {
  42.     {
  43.     {1.000000, 0.000000, 0.000000},
  44.     {0.500000, 0.866025, 0.000000},
  45.     {-0.500000, 0.866025, 0.000000},
  46.     {-1.000000, 0.000000, 0.000000},
  47.     {-0.500000, -0.866025, 0.000000},
  48.     {0.500000, -0.866025, 0.000000},
  49.     {1.000000, 0.000000, 0.000000},
  50.     },
  51.  
  52.     {
  53.     {1.000000, 0.034074, 0.258819},
  54.     {0.500000, 0.870590, 0.034675},
  55.     {-0.500000, 0.870590, 0.034675},
  56.     {-1.000000, 0.034074, 0.258819},
  57.     {-0.500000, -0.802442, 0.482963},
  58.     {0.500000, -0.802442, 0.482963},
  59.     {1.000000, 0.034074, 0.258819},
  60.     },
  61.  
  62.     {
  63.     {1.000000, 0.133975, 0.500000},
  64.     {0.500000, 0.883975, 0.066987},
  65.     {-0.500000, 0.883975, 0.066987},
  66.     {-1.000000, 0.133975, 0.500000},
  67.     {-0.500000, -0.616025, 0.933013},
  68.     {0.500000, -0.616025, 0.933013},
  69.     {1.000000, 0.133975, 0.500000},
  70.     },
  71.  
  72.     {
  73.     {1.000000, 0.292893, 0.707107},
  74.     {0.500000, 0.905266, 0.094734},
  75.     {-0.500000, 0.905266, 0.094734},
  76.     {-1.000000, 0.292893, 0.707107},
  77.     {-0.500000, -0.319479, 1.319479},
  78.     {0.500000, -0.319479, 1.319479},
  79.     {1.000000, 0.292893, 0.707107},
  80.     },
  81.  
  82.     {
  83.     {1.000000, 0.500000, 0.866025},
  84.     {0.500000, 0.933013, 0.116025},
  85.     {-0.500000, 0.933013, 0.116025},
  86.     {-1.000000, 0.500000, 0.866025},
  87.     {-0.500000, 0.066987, 1.616025},
  88.     {0.500000, 0.066987, 1.616025},
  89.     {1.000000, 0.500000, 0.866025},
  90.     },
  91.  
  92.     {
  93.     {1.000000, 0.741181, 0.965926},
  94.     {0.500000, 0.965325, 0.129410},
  95.     {-0.500000, 0.965325, 0.129410},
  96.     {-1.000000, 0.741181, 0.965926},
  97.     {-0.500000, 0.517037, 1.802442},
  98.     {0.500000, 0.517037, 1.802442},
  99.     {1.000000, 0.741181, 0.965926},
  100.     },
  101.  
  102.     {
  103.     {1.000000, 1.000000, 1.000000},
  104.     {0.500000, 1.000000, 0.133975},
  105.     {-0.500000, 1.000000, 0.133975},
  106.     {-1.000000, 1.000000, 1.000000},
  107.     {-0.500000, 1.000000, 1.866025},
  108.     {0.500000, 1.000000, 1.866025},
  109.     {1.000000, 1.000000, 1.000000},
  110.     },
  111.  
  112. };
  113.  
  114. draw_single_cylinder() {
  115.  
  116.     bgnline();
  117. v3f(scp[0]);
  118. v3f(scp[1]);
  119. v3f(scp[2]);
  120. v3f(scp[3]);
  121. v3f(scp[4]);
  122. v3f(scp[5]);
  123. v3f(scp[6]);
  124. v3f(scp[7]);
  125. v3f(scp[8]);
  126. v3f(scp[9]);
  127. v3f(scp[10]);
  128. v3f(scp[11]);
  129. v3f(scp[12]);
  130. v3f(scp[13]);
  131.     endline();
  132. }
  133.  
  134. draw_double_cylinder() {
  135.  
  136.     bgnline();
  137. v3f(dcp[0]);
  138. v3f(dcp[1]);
  139. v3f(dcp[2]);
  140. v3f(dcp[3]);
  141. v3f(dcp[4]);
  142. v3f(dcp[5]);
  143. v3f(dcp[6]);
  144. v3f(dcp[7]);
  145. v3f(dcp[8]);
  146. v3f(dcp[9]);
  147. v3f(dcp[10]);
  148. v3f(dcp[11]);
  149. v3f(dcp[12]);
  150. v3f(dcp[13]);
  151.     endline();
  152. }
  153.  
  154. draw_elbow() {
  155.  
  156.     bgnline();
  157.         v3f(ep[0][0]);
  158.         v3f(ep[1][0]);
  159.         v3f(ep[0][1]);
  160.         v3f(ep[1][1]);
  161.         v3f(ep[0][2]);
  162.         v3f(ep[1][2]);
  163.         v3f(ep[0][3]);
  164.         v3f(ep[1][3]);
  165.         v3f(ep[0][4]);
  166.         v3f(ep[1][4]);
  167.         v3f(ep[0][5]);
  168.         v3f(ep[1][5]);
  169.         v3f(ep[0][6]);
  170.         v3f(ep[1][6]);
  171.     endline();
  172.     bgnline();
  173.         v3f(ep[1][0]);
  174.         v3f(ep[2][0]);
  175.         v3f(ep[1][1]);
  176.         v3f(ep[2][1]);
  177.         v3f(ep[1][2]);
  178.         v3f(ep[2][2]);
  179.         v3f(ep[1][3]);
  180.         v3f(ep[2][3]);
  181.         v3f(ep[1][4]);
  182.         v3f(ep[2][4]);
  183.         v3f(ep[1][5]);
  184.         v3f(ep[2][5]);
  185.         v3f(ep[1][6]);
  186.         v3f(ep[2][6]);
  187.     endline();
  188.     bgnline();
  189.         v3f(ep[2][0]);
  190.         v3f(ep[3][0]);
  191.         v3f(ep[2][1]);
  192.         v3f(ep[3][1]);
  193.         v3f(ep[2][2]);
  194.         v3f(ep[3][2]);
  195.         v3f(ep[2][3]);
  196.         v3f(ep[3][3]);
  197.         v3f(ep[2][4]);
  198.         v3f(ep[3][4]);
  199.         v3f(ep[2][5]);
  200.         v3f(ep[3][5]);
  201.         v3f(ep[2][6]);
  202.         v3f(ep[3][6]);
  203.     endline();
  204.     bgnline();
  205.         v3f(ep[3][0]);
  206.         v3f(ep[4][0]);
  207.         v3f(ep[3][1]);
  208.         v3f(ep[4][1]);
  209.         v3f(ep[3][2]);
  210.         v3f(ep[4][2]);
  211.         v3f(ep[3][3]);
  212.         v3f(ep[4][3]);
  213.         v3f(ep[3][4]);
  214.         v3f(ep[4][4]);
  215.         v3f(ep[3][5]);
  216.         v3f(ep[4][5]);
  217.         v3f(ep[3][6]);
  218.         v3f(ep[4][6]);
  219.     endline();
  220.     bgnline();
  221.         v3f(ep[4][0]);
  222.         v3f(ep[5][0]);
  223.         v3f(ep[4][1]);
  224.         v3f(ep[5][1]);
  225.         v3f(ep[4][2]);
  226.         v3f(ep[5][2]);
  227.         v3f(ep[4][3]);
  228.         v3f(ep[5][3]);
  229.         v3f(ep[4][4]);
  230.         v3f(ep[5][4]);
  231.         v3f(ep[4][5]);
  232.         v3f(ep[5][5]);
  233.         v3f(ep[4][6]);
  234.         v3f(ep[5][6]);
  235.     endline();
  236.     bgnline();
  237.         v3f(ep[5][0]);
  238.         v3f(ep[6][0]);
  239.         v3f(ep[5][1]);
  240.         v3f(ep[6][1]);
  241.         v3f(ep[5][2]);
  242.         v3f(ep[6][2]);
  243.         v3f(ep[5][3]);
  244.         v3f(ep[6][3]);
  245.         v3f(ep[5][4]);
  246.         v3f(ep[6][4]);
  247.         v3f(ep[5][5]);
  248.         v3f(ep[6][5]);
  249.         v3f(ep[5][6]);
  250.         v3f(ep[6][6]);
  251.     endline();
  252. }
  253.  
  254. bend_forward() {
  255.  
  256.     translate(0.0, 1.000000, 0.0);
  257.     rotate(900, 'x');
  258.     translate(0.0, -1.000000, 0.0);
  259. }
  260.  
  261. bend_left() {
  262.  
  263.     rotate(-900, 'z');
  264.     translate(0.0, 1.000000, 0.0);
  265.     rotate(900, 'x');
  266.     translate(0.0, -1.000000, 0.0);
  267. }
  268.  
  269. bend_right() {
  270.  
  271.     rotate(900, 'z');
  272.     translate(0.0, 1.000000, 0.0);
  273.     rotate(900, 'x');
  274.     translate(0.0, -1.000000, 0.0);
  275. }
  276.  
  277. draw_logo_line() {
  278.  
  279.     lmbind(MATERIAL, MAT_LOGO);
  280.  
  281.     translate(5.500000, -3.500000, 4.500000);
  282.  
  283.     translate(0.0, 0.0, -7.000000);
  284.     draw_double_cylinder();
  285.     bend_forward();
  286.     draw_elbow();
  287.     translate(0.0, 0.0, -7.000000);
  288.     draw_double_cylinder();
  289.     bend_forward();
  290.     draw_elbow();
  291.     translate(0.0, 0.0, -5.000000);
  292.     draw_single_cylinder();
  293.     bend_right();
  294.     draw_elbow();
  295.     translate(0.0, 0.0, -7.000000);
  296.     draw_double_cylinder();
  297.     bend_forward();
  298.     draw_elbow();
  299.     translate(0.0, 0.0, -7.000000);
  300.     draw_double_cylinder();
  301.     bend_forward();
  302.     draw_elbow();
  303.     translate(0.0, 0.0, -5.000000);
  304.     draw_single_cylinder();
  305.     bend_left();
  306.     draw_elbow();
  307.     translate(0.0, 0.0, -7.000000);
  308.     draw_double_cylinder();
  309.     bend_forward();
  310.     draw_elbow();
  311.     translate(0.0, 0.0, -7.000000);
  312.     draw_double_cylinder();
  313.     bend_forward();
  314.     draw_elbow();
  315.     translate(0.0, 0.0, -5.000000);
  316.     draw_single_cylinder();
  317.     bend_right();
  318.     draw_elbow();
  319.     translate(0.0, 0.0, -7.000000);
  320.     draw_double_cylinder();
  321.     bend_forward();
  322.     draw_elbow();
  323.     translate(0.0, 0.0, -7.000000);
  324.     draw_double_cylinder();
  325.     bend_forward();
  326.     draw_elbow();
  327.     translate(0.0, 0.0, -5.000000);
  328.     draw_single_cylinder();
  329.     bend_left();
  330.     draw_elbow();
  331.     translate(0.0, 0.0, -7.000000);
  332.     draw_double_cylinder();
  333.     bend_forward();
  334.     draw_elbow();
  335.     translate(0.0, 0.0, -7.000000);
  336.     draw_double_cylinder();
  337.     bend_forward();
  338.     draw_elbow();
  339.     translate(0.0, 0.0, -5.000000);
  340.     draw_single_cylinder();
  341.     bend_right();
  342.     draw_elbow();
  343.     translate(0.0, 0.0, -7.000000);
  344.     draw_double_cylinder();
  345.     bend_forward();
  346.     draw_elbow();
  347.     translate(0.0, 0.0, -7.000000);
  348.     draw_double_cylinder();
  349.     bend_forward();
  350.     draw_elbow();
  351.     translate(0.0, 0.0, -5.000000);
  352.     draw_single_cylinder();
  353.     bend_left();
  354.     draw_elbow();
  355. }
  356.  
  357.